using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._NetworkAnalystTools._Analysis
{
    /// <summary>
    /// <para>Make Service Area Analysis Layer</para>
    /// <para>Makes a service area network analysis layer and sets its analysis properties. A service area analysis layer is useful in determining the area of accessibility within a given cutoff cost from a facility location. The layer can be created using a local network dataset or using a routing service hosted online or in a portal.</para>
    /// <para>创建服务区网络分析图层并设置其分析属性。服务区分析图层可用于确定设施点位置在给定截止成本内的可达性区域。可以使用本地网络数据集或使用在线或门户中托管的路由服务创建图层。</para>
    /// </summary>    
    [DisplayName("Make Service Area Analysis Layer")]
    public class MakeServiceAreaAnalysisLayer : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public MakeServiceAreaAnalysisLayer()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_network_data_source">
        /// <para>Network Data Source</para>
        /// <para>The network dataset or service on which the network analysis will be performed. Use the portal URL for a service.</para>
        /// <para>将对其执行网络分析的网络数据集或服务。使用服务的门户 URL。</para>
        /// </param>
        public MakeServiceAreaAnalysisLayer(object _network_data_source)
        {
            this._network_data_source = _network_data_source;
        }
        public override string ToolboxName => "Network Analyst Tools";

        public override string ToolName => "Make Service Area Analysis Layer";

        public override string CallName => "na.MakeServiceAreaAnalysisLayer";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_network_data_source, _layer_name, _travel_mode, _travel_direction.GetGPValue(), _cutoffs, _time_of_day, _time_zone.GetGPValue(), _output_type.GetGPValue(), _polygon_detail.GetGPValue(), _geometry_at_overlaps.GetGPValue(), _geometry_at_cutoffs.GetGPValue(), _polygon_trim_distance, _exclude_sources_from_polygon_generation, _accumulate_attributes, _out_network_analysis_layer];

        /// <summary>
        /// <para>Network Data Source</para>
        /// <para>The network dataset or service on which the network analysis will be performed. Use the portal URL for a service.</para>
        /// <para>将对其执行网络分析的网络数据集或服务。使用服务的门户 URL。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Network Data Source")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _network_data_source { get; set; }


        /// <summary>
        /// <para>Layer Name</para>
        /// <para>The name of the network analysis layer to create.</para>
        /// <para>要创建的网络分析图层的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Layer Name")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _layer_name { get; set; } = null;


        /// <summary>
        /// <para>Travel Mode</para>
        /// <para><xdoc>
        ///   <para>The name of the travel mode to use in the analysis. The travel mode represents a collection of network settings, such as travel restrictions and U-turn policies, that determine how a pedestrian, car, truck, or other medium of transportation moves through the network. Travel modes are defined on your network data source.</para>
        ///   <para>An arcpy.na.TravelMode object and a string containing the valid JSON representation of a travel mode can also be used as input to the parameter.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要在分析中使用的出行模式的名称。出行模式表示一组网络设置，例如出行限制和 U 形转弯策略，这些设置决定了行人、汽车、卡车或其他交通工具在网络中的移动方式。出行模式是在网络数据源上定义的。</para>
        ///   <para>还可以将 arcpy.na.TravelMode 对象和包含出行模式的有效 JSON 表示形式的字符串用作参数的输入。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Travel Mode")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _travel_mode { get; set; } = null;


        /// <summary>
        /// <para>Travel Direction</para>
        /// <para><xdoc>
        ///   <para>Specifies the direction of travel to or from the facilities.</para>
        ///   <bulletList>
        ///     <bullet_item>Away from facilities—The service area represents traveling away from the facilities. This is the default.</bullet_item><para/>
        ///     <bullet_item>Toward facilities—The service area represents traveling toward the facilities.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>Using this parameter can result in different service areas on a network with one-way restrictions and different impedances based on direction of travel. The service area for a pizza delivery store, for example, should be created away from the facility, whereas the service area of a hospital should be created toward the facility.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定进出设施点的行进方向。</para>
        ///   <bulletList>
        ///     <bullet_item>远离设施点 - 服务区表示远离设施点的行程。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>朝向设施点 - 服务区表示朝向设施点的行驶。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>使用此参数可能会导致网络上的不同服务区域具有单向限制和基于行进方向的不同阻抗。例如，披萨外卖店的服务区应创建在远离设施的地方，而医院的服务区应朝向设施创建。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Travel Direction")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _travel_direction_value _travel_direction { get; set; } = _travel_direction_value._FROM_FACILITIES;

        public enum _travel_direction_value
        {
            /// <summary>
            /// <para>Toward facilities</para>
            /// <para>Toward facilities—The service area represents traveling toward the facilities.</para>
            /// <para>朝向设施点 - 服务区表示朝向设施点的行驶。</para>
            /// </summary>
            [Description("Toward facilities")]
            [GPEnumValue("TO_FACILITIES")]
            _TO_FACILITIES,

            /// <summary>
            /// <para>Away from facilities</para>
            /// <para>Away from facilities—The service area represents traveling away from the facilities. This is the default.</para>
            /// <para>远离设施点 - 服务区表示远离设施点的行程。这是默认设置。</para>
            /// </summary>
            [Description("Away from facilities")]
            [GPEnumValue("FROM_FACILITIES")]
            _FROM_FACILITIES,

        }

        /// <summary>
        /// <para>Cutoffs</para>
        /// <para><xdoc>
        ///   <para>The extent of the service area to be calculated in the units of the impedance attribute used by your selected travel mode. For example, when analyzing driving time, a cutoff value of 10 means that the resulting service area will represent the area reachable within a 10-minute drive time.</para>
        ///   <para>Multiple cutoffs can be set to create concentric service areas. For example, to find 2-, 3-, and 5-minute service areas for the same facility, specify 2, 3, and 5 as the values for this parameter.</para>
        ///   <para>This default cutoff value can be overridden on a per-facility basis by specifying individual break values in the facilities sublayer.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要以所选出行模式使用的阻抗属性为单位计算的服务区域范围。例如，在分析行驶时间时，截止值 10 表示生成的服务区域将表示 10 分钟行驶时间内可到达的区域。</para>
        ///   <para>可以设置多个截止点以创建同心服务区。例如，若要查找同一设施的 2 分钟、3 分钟和 5 分钟服务区，请指定 2、3 和 5 作为此参数的值。</para>
        ///   <para>通过在设施点子图层中指定单个断点值，可以基于每个设施点覆盖此默认截止值。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Cutoffs")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _cutoffs { get; set; } = null;


        /// <summary>
        /// <para>Time of Day</para>
        /// <para><xdoc>
        ///   <para>The time to depart from or arrive at the facilities of the service area layer. The interpretation of this value as a departure or arrival time depends on whether travel is away from or toward the facilities.
        ///   <bulletList>
        ///     <bullet_item>It represents the departure time if Travel Direction is set to Away from facilities.  </bullet_item><para/>
        ///     <bullet_item>It represents the arrival time if Travel Direction is set to Toward facilities.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The Time of Day parameter is most useful for finding the roads that can be reached based on a travel mode that uses an impedance attribute that varies with the time of the day, such as one based on dynamic traffic conditions. Solving the same analysis using different Time of Day values allows you to see how a facility's reach changes over time. For example, the five-minute service area around a fire station may start out large in the early morning, diminish during the morning rush hour, grow in the late morning, and so on, throughout the day.</para>
        ///   <para>A date and time can be specified as 10/21/2015 10:30 AM.</para>
        ///   <para>Instead of using a particular date, a day of the week can be specified using the following dates:
        ///   <bulletList>
        ///     <bullet_item>Today—12/30/1899  </bullet_item><para/>
        ///     <bullet_item>Sunday—12/31/1899  </bullet_item><para/>
        ///     <bullet_item>Monday—1/1/1900  </bullet_item><para/>
        ///     <bullet_item>Tuesday—1/2/1900  </bullet_item><para/>
        ///     <bullet_item>Wednesday—1/3/1900  </bullet_item><para/>
        ///     <bullet_item>Thursday—1/4/1900  </bullet_item><para/>
        ///     <bullet_item>Friday—1/5/1900  </bullet_item><para/>
        ///     <bullet_item>Saturday—1/6/1900  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>出发或到达服务区图层的设施点的时间。将此值解释为出发时间或到达时间取决于旅行是远离还是朝向设施。
        ///   <bulletList>
        ///     <bullet_item>如果“行驶方向”设置为“远离设施点”，则表示出发时间。</bullet_item><para/>
        ///     <bullet_item>如果“行驶方向”设置为“朝向设施点”，则表示到达时间。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>时间参数对于查找基于出行模式可到达的道路最有用，该出行模式使用随一天中的时间而变化的阻抗属性，例如基于动态交通状况的出行模式。使用不同的“一天中的时间”值求解相同的分析，可以查看设施的覆盖范围如何随时间变化。例如，消防站周围的五分钟服务区可能在清晨开始变大，在早高峰时段逐渐减少，在清晨晚些时候增加，依此类推，一整天。</para>
        ///   <para>日期和时间可以指定为 2015 年 10 月 21 日上午 10：30。</para>
        /// 可以使用<para>以下日期指定星期几，而不是使用特定日期：
        ///   <bulletList>
        ///     <bullet_item>今天 - 1899 年 12 月 30 日</bullet_item><para/>
        ///     <bullet_item>星期日—1899年12月31日</bullet_item><para/>
        ///     <bullet_item>星期一 - 1/1/1900</bullet_item><para/>
        ///     <bullet_item>星期二 - 1/2/1900</bullet_item><para/>
        ///     <bullet_item>星期三 - 1/3/1900</bullet_item><para/>
        ///     <bullet_item>星期四—1/4/1900</bullet_item><para/>
        ///     <bullet_item>星期五 - 1/5/1900</bullet_item><para/>
        ///     <bullet_item>星期六 - 1/6/1900</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time of Day")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _time_of_day { get; set; } = null;


        /// <summary>
        /// <para>Time Zone</para>
        /// <para><xdoc>
        ///   <para>Specifies the time zone for the time of day parameter.</para>
        ///   <bulletList>
        ///     <bullet_item>Local time at locations—The time of day parameter will use the time zone or zones in which the facilities are located. The start or end times of the service areas are staggered by time zone. This is the default.For example, setting time of day to 9:00 a.m. causes service areas to be generated for 9:00 a.m. eastern time for any facilities in the eastern time zone, 9:00 a.m. central time for facilities in the central time zone, 9:00 a.m. mountain time for facilities in the mountain time zone, and so on. If stores in a chain that span the U.S. open at 9:00 a.m. local time, choose this parameter value to find market territories at opening time for all stores in one solve. First, the stores in the eastern time zone open and a polygon is generated. An hour later, stores open in the central time zone, and so on. Nine o'clock is always in local time but staggered in real time.</bullet_item><para/>
        ///     <bullet_item>UTC—The time of day parameter will use coordinated universal time (UTC). All facilities are reached or departed from simultaneously, regardless of the time zone or zones in which they are located.Setting time of day to 2:00 p.m. causes service areas to be generated for 9:00 a.m. eastern standard time for any facilities in the eastern time zone, 8:00 a.m. central standard time for facilities in the central time zone, 7:00 a.m. mountain standard time for facilities in the mountain time zone, and so on.One of the cases in which the UTC option is useful is to visualize emergency response coverage for a jurisdiction that is split into two time zones. The emergency vehicles are loaded as facilities. Time of day is set to now in UTC. (You need to determine what the current time and date are in terms of UTC to correctly use this option.) Other properties are set and the analysis is solved. Even though a time-zone boundary divides the vehicles, the results show areas that can be reached given current traffic conditions. This same process can be used for other times as well, not just for now.
        ///     <para>The scenario above assumes standard time. During daylight saving time, the eastern, central, and mountain times will each be one hour ahead (that is, 10:00, 9:00, and 8:00 a.m., respectively).</para>
        ///     <bold></bold>
        ///     </bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定时间参数的时区。</para>
        ///   <bulletList>
        ///     <bullet_item>位置的本地时间 - 时间参数将使用设施点所在的一个或多个时区。服务区的开始或结束时间按时区错开。这是默认设置。例如，将一天中的时间设置为上午 9：00 会导致东部时区中的任何设施点生成东部时间上午 9：00 的服务区服务区，中部时区设施点生成中部时间上午 9：00，山区时区设施点生成山区时间上午 9：00，依此类推。如果横跨美国的连锁店在当地时间上午 9：00 开门营业，请选择此参数值以在一个求解中查找所有门店在开门时间的市场区域。首先，东部时区的商店打开并生成多边形。一小时后，商店在中部时区开门营业，依此类推。九点钟始终是当地时间，但实时错开。</bullet_item><para/>
        /// <bullet_item>UTC—时间参数将使用协调世界时 （UTC）。所有设施同时到达或离开，无论它们位于哪个时区或多个区域。将一天中的时间设置为下午 2：00 将导致东部时区中的任何设施点的东部标准时间上午 9：00、中部时区设施点的中部标准时间上午 8：00、山区时区的设施点的山区标准时间上午 7：00 等。UTC 选项有用的一种情况是可视化分为两个时区的司法管辖区的应急响应覆盖范围。应急车辆作为设施装载。一天中的时间设置为现在 UTC。（您需要确定以 UTC 为单位的当前时间和日期，才能正确使用此选项。设置其他属性并求解分析。尽管时区边界将车辆分开，但结果显示了在当前交通条件下可以到达的区域。同样的过程也可以用于其他时间，而不仅仅是现在。
        ///     <para>上述方案假定采用标准时间。在夏令时期间，东部、中部和山区时间将分别提前一小时（即分别为上午 10：00、9：00 和 8：00）。</para>
        ///     <bold></bold>
        ///     </bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Zone")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _time_zone_value _time_zone { get; set; } = _time_zone_value._LOCAL_TIME_AT_LOCATIONS;

        public enum _time_zone_value
        {
            /// <summary>
            /// <para>UTC</para>
            /// <para>UTC—The time of day parameter will use coordinated universal time (UTC). All facilities are reached or departed from simultaneously, regardless of the time zone or zones in which they are located.Setting time of day to 2:00 p.m. causes service areas to be generated for 9:00 a.m. eastern standard time for any facilities in the eastern time zone, 8:00 a.m. central standard time for facilities in the central time zone, 7:00 a.m. mountain standard time for facilities in the mountain time zone, and so on.One of the cases in which the UTC option is useful is to visualize emergency response coverage for a jurisdiction that is split into two time zones. The emergency vehicles are loaded as facilities. Time of day is set to now in UTC. (You need to determine what the current time and date are in terms of UTC to correctly use this option.) Other properties are set and the analysis is solved. Even though a time-zone boundary divides the vehicles, the results show areas that can be reached given current traffic conditions. This same process can be used for other times as well, not just for now.</para>
            /// <para>UTC—时间参数将使用协调世界时 （UTC）。所有设施同时到达或离开，无论它们位于哪个时区或多个区域。将一天中的时间设置为下午 2：00 将导致东部时区中的任何设施点的东部标准时间上午 9：00、中部时区设施点的中部标准时间上午 8：00、山区时区的设施点的山区标准时间上午 7：00 等。UTC 选项有用的一种情况是可视化分为两个时区的司法管辖区的应急响应覆盖范围。应急车辆作为设施装载。一天中的时间设置为现在 UTC。（您需要确定以 UTC 为单位的当前时间和日期，才能正确使用此选项。设置其他属性并求解分析。尽管时区边界将车辆分开，但结果显示了在当前交通条件下可以到达的区域。同样的过程也可以用于其他时间，而不仅仅是现在。</para>
            /// </summary>
            [Description("UTC")]
            [GPEnumValue("UTC")]
            _UTC,

            /// <summary>
            /// <para>Local time at locations</para>
            /// <para>Local time at locations—The time of day parameter will use the time zone or zones in which the facilities are located. The start or end times of the service areas are staggered by time zone. This is the default.For example, setting time of day to 9:00 a.m. causes service areas to be generated for 9:00 a.m. eastern time for any facilities in the eastern time zone, 9:00 a.m. central time for facilities in the central time zone, 9:00 a.m. mountain time for facilities in the mountain time zone, and so on. If stores in a chain that span the U.S. open at 9:00 a.m. local time, choose this parameter value to find market territories at opening time for all stores in one solve. First, the stores in the eastern time zone open and a polygon is generated. An hour later, stores open in the central time zone, and so on. Nine o'clock is always in local time but staggered in real time.</para>
            /// <para>位置的本地时间 - 时间参数将使用设施点所在的一个或多个时区。服务区的开始或结束时间按时区错开。这是默认设置。例如，将一天中的时间设置为上午 9：00 会导致东部时区中的任何设施点生成东部时间上午 9：00 的服务区服务区，中部时区设施点生成中部时间上午 9：00，山区时区设施点生成山区时间上午 9：00，依此类推。如果横跨美国的连锁店在当地时间上午 9：00 开门营业，请选择此参数值以在一个求解中查找所有门店在开门时间的市场区域。首先，东部时区的商店打开并生成多边形。一小时后，商店在中部时区开门营业，依此类推。九点钟始终是当地时间，但实时错开。</para>
            /// </summary>
            [Description("Local time at locations")]
            [GPEnumValue("LOCAL_TIME_AT_LOCATIONS")]
            _LOCAL_TIME_AT_LOCATIONS,

        }

        /// <summary>
        /// <para>Output Type</para>
        /// <para><xdoc>
        ///   <para>Specifies the type of output to be generated. Service area output can be line features representing the roads reachable before the cutoffs are exceeded or the polygon features encompassing these lines (representing the reachable area).</para>
        ///   <bulletList>
        ///     <bullet_item>Polygons—The service area output will contain polygons only. This is the default.</bullet_item><para/>
        ///     <bullet_item>Lines—The service area output will contain lines only.</bullet_item><para/>
        ///     <bullet_item>Polygons and lines—The service area output will contain both polygons and lines.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>The Lines and Polygons and lines output types are not available if the network data source is a service on a version of Portal for ArcGIS that does not support line generation.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定要生成的输出类型。服务区输出可以是表示在超过截止点之前可到达的道路的线要素，也可以是包含这些线的面要素（表示可到达区域）。</para>
        ///   <bulletList>
        ///     <bullet_item>面—服务区输出将仅包含面。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>线 - 服务区输出将仅包含线。</bullet_item><para/>
        ///     <bullet_item>面和线—服务区输出将同时包含面和线。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>如果网络数据源是 Portal for ArcGIS 版本上不支持线生成的服务，则线和面以及线输出类型不可用。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _output_type_value _output_type { get; set; } = _output_type_value._POLYGONS;

        public enum _output_type_value
        {
            /// <summary>
            /// <para>Polygons</para>
            /// <para>Polygons—The service area output will contain polygons only. This is the default.</para>
            /// <para>面—服务区输出将仅包含面。这是默认设置。</para>
            /// </summary>
            [Description("Polygons")]
            [GPEnumValue("POLYGONS")]
            _POLYGONS,

            /// <summary>
            /// <para>Lines</para>
            /// <para>Lines—The service area output will contain lines only.</para>
            /// <para>线 - 服务区输出将仅包含线。</para>
            /// </summary>
            [Description("Lines")]
            [GPEnumValue("LINES")]
            _LINES,

            /// <summary>
            /// <para>Polygons and lines</para>
            /// <para>Polygons and lines—The service area output will contain both polygons and lines.</para>
            /// <para>面和线—服务区输出将同时包含面和线。</para>
            /// </summary>
            [Description("Polygons and lines")]
            [GPEnumValue("POLYGONS_AND_LINES")]
            _POLYGONS_AND_LINES,

        }

        /// <summary>
        /// <para>Polygon Detail</para>
        /// <para><xdoc>
        ///   <para>Specifies the level of detail of the output polygons.</para>
        ///   <bulletList>
        ///     <bullet_item>Standard—Polygons with a standard level of detail will be created. This is the default.</bullet_item><para/>
        ///     <bullet_item>Generalized—Generalized polygons will be created using the network's hierarchy attribute to produce results quickly. This option is not available if the network does not have a hierarchy attribute.</bullet_item><para/>
        ///     <bullet_item>High—Polygons with a higher level of detail will be creates for applications in which precise results are important.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>If your analysis includes an urban area with a grid-like street network, the difference between generalized and standard polygons will be minimal. However, for mountain and rural roads, the standard and detailed polygons may present significantly more accurate results than generalized polygons.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定输出多边形的细节级别。</para>
        ///   <bulletList>
        ///     <bullet_item>标准 - 将创建具有标准细节级别的面。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>广义—将使用网络的层次属性创建广义面，以快速生成结果。如果网络没有层次结构属性，则此选项不可用。</bullet_item><para/>
        ///     <bullet_item>高 - 将为具有较高细节级别的多边形创建，以用于需要精确结果的应用程序。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>如果分析包括具有网格状街道网络的城市区域，则广义面和标准面之间的差异将很小。但是，对于山区和农村道路，标准和详细多边形可能比广义多边形提供更准确的结果。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Polygon Detail")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _polygon_detail_value _polygon_detail { get; set; } = _polygon_detail_value._STANDARD;

        public enum _polygon_detail_value
        {
            /// <summary>
            /// <para>Generalized</para>
            /// <para>Generalized—Generalized polygons will be created using the network's hierarchy attribute to produce results quickly. This option is not available if the network does not have a hierarchy attribute.</para>
            /// <para>广义—将使用网络的层次属性创建广义面，以快速生成结果。如果网络没有层次结构属性，则此选项不可用。</para>
            /// </summary>
            [Description("Generalized")]
            [GPEnumValue("GENERALIZED")]
            _GENERALIZED,

            /// <summary>
            /// <para>Standard</para>
            /// <para>Standard—Polygons with a standard level of detail will be created. This is the default.</para>
            /// <para>标准 - 将创建具有标准细节级别的面。这是默认设置。</para>
            /// </summary>
            [Description("Standard")]
            [GPEnumValue("STANDARD")]
            _STANDARD,

            /// <summary>
            /// <para>High</para>
            /// <para>High—Polygons with a higher level of detail will be creates for applications in which precise results are important.</para>
            /// <para>高 - 将为具有较高细节级别的多边形创建，以用于需要精确结果的应用程序。</para>
            /// </summary>
            [Description("High")]
            [GPEnumValue("HIGH")]
            _HIGH,

        }

        /// <summary>
        /// <para>Geometry at Overlaps</para>
        /// <para><xdoc>
        ///   <para>Specifies the behavior of service-area output from multiple facilities in relation to one another.</para>
        ///   <bulletList>
        ///     <bullet_item>Overlap—Individual polygons or sets of lines for each facility will be created. The polygons or lines can overlap each other. This is the default.</bullet_item><para/>
        ///     <bullet_item>Dissolve—The polygons of multiple facilities that have the same cutoff value will be joined into a single polygon. This option does not apply to line output.</bullet_item><para/>
        ///     <bullet_item>Split—An area will be assigned to the closest facility so polygons or lines do not overlap each other.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定多个设施点的服务区输出相互关联的行为。</para>
        ///   <bulletList>
        ///     <bullet_item>重叠—将为每个设施点创建单个面或线集。多边形或线可以相互重叠。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>溶解—具有相同截止值的多个设施点的面将连接成单个面。此选项不适用于线路输出。</bullet_item><para/>
        ///     <bullet_item>分割—将区域分配给最近的设施点，以便面或线不会相互重叠。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Geometry at Overlaps")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _geometry_at_overlaps_value _geometry_at_overlaps { get; set; } = _geometry_at_overlaps_value._OVERLAP;

        public enum _geometry_at_overlaps_value
        {
            /// <summary>
            /// <para>Overlap</para>
            /// <para>Overlap—Individual polygons or sets of lines for each facility will be created. The polygons or lines can overlap each other. This is the default.</para>
            /// <para>重叠—将为每个设施点创建单个面或线集。多边形或线可以相互重叠。这是默认设置。</para>
            /// </summary>
            [Description("Overlap")]
            [GPEnumValue("OVERLAP")]
            _OVERLAP,

            /// <summary>
            /// <para>Dissolve</para>
            /// <para>Dissolve—The polygons of multiple facilities that have the same cutoff value will be joined into a single polygon. This option does not apply to line output.</para>
            /// <para>溶解—具有相同截止值的多个设施点的面将连接成单个面。此选项不适用于线路输出。</para>
            /// </summary>
            [Description("Dissolve")]
            [GPEnumValue("DISSOLVE")]
            _DISSOLVE,

            /// <summary>
            /// <para>Split</para>
            /// <para>Split—An area will be assigned to the closest facility so polygons or lines do not overlap each other.</para>
            /// <para>分割—将区域分配给最近的设施点，以便面或线不会相互重叠。</para>
            /// </summary>
            [Description("Split")]
            [GPEnumValue("SPLIT")]
            _SPLIT,

        }

        /// <summary>
        /// <para>Geometry at Cutoffs</para>
        /// <para><xdoc>
        ///   <para>Specifies the behavior of service area output for a single facility when multiple cutoff values are specified. This parameter does not apply to line output.</para>
        ///   <bulletList>
        ///     <bullet_item>Rings—Each polygon will include only the area between consecutive cutoff values. It will not include the area between the facility and any smaller cutoffs. For example, if you create 5- and 10-minute service areas, the 5-minute service area polygon will include the area reachable in 0 to 5 minutes, and the 10-minute service area polygon will include the area reachable in 5 to 10 minutes. This is the default.</bullet_item><para/>
        ///     <bullet_item>Disks—Each polygon will include the area reachable from the facility up to the cutoff value, including the area reachable within smaller cutoff values. For example, if you create 5- and 10-minute service areas, the 10-minute service area polygon will include the area under the 5-minute service area polygon.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定指定多个截止值时单个设施点的服务区输出的行为。此参数不适用于线路输出。</para>
        ///   <bulletList>
        ///     <bullet_item>环 - 每个面将仅包括连续截止值之间的区域。它不包括设施与任何较小的截止点之间的区域。例如，如果创建 5 分钟和 10 分钟服务区，则 5 分钟服务区面将包括 0 到 5 分钟内可到达的区域，而 10 分钟服务区面将包括 5 到 10 分钟内可到达的区域。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>圆盘—每个面将包括从设施点到临界值可到达的区域，包括较小临界值内可到达的区域。例如，如果创建 5 分钟和 10 分钟服务区，则 10 分钟服务区面将包括 5 分钟服务区面下的区域。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Geometry at Cutoffs")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _geometry_at_cutoffs_value _geometry_at_cutoffs { get; set; } = _geometry_at_cutoffs_value._RINGS;

        public enum _geometry_at_cutoffs_value
        {
            /// <summary>
            /// <para>Rings</para>
            /// <para>Rings—Each polygon will include only the area between consecutive cutoff values. It will not include the area between the facility and any smaller cutoffs. For example, if you create 5- and 10-minute service areas, the 5-minute service area polygon will include the area reachable in 0 to 5 minutes, and the 10-minute service area polygon will include the area reachable in 5 to 10 minutes. This is the default.</para>
            /// <para>环 - 每个面将仅包括连续截止值之间的区域。它不包括设施与任何较小的截止点之间的区域。例如，如果创建 5 分钟和 10 分钟服务区，则 5 分钟服务区面将包括 0 到 5 分钟内可到达的区域，而 10 分钟服务区面将包括 5 到 10 分钟内可到达的区域。这是默认设置。</para>
            /// </summary>
            [Description("Rings")]
            [GPEnumValue("RINGS")]
            _RINGS,

            /// <summary>
            /// <para>Disks</para>
            /// <para>Disks—Each polygon will include the area reachable from the facility up to the cutoff value, including the area reachable within smaller cutoff values. For example, if you create 5- and 10-minute service areas, the 10-minute service area polygon will include the area under the 5-minute service area polygon.</para>
            /// <para>圆盘—每个面将包括从设施点到临界值可到达的区域，包括较小临界值内可到达的区域。例如，如果创建 5 分钟和 10 分钟服务区，则 10 分钟服务区面将包括 5 分钟服务区面下的区域。</para>
            /// </summary>
            [Description("Disks")]
            [GPEnumValue("DISKS")]
            _DISKS,

        }

        /// <summary>
        /// <para>Polygon Trim Distance</para>
        /// <para><xdoc>
        ///   <para>The service area polygon trim distance. The polygon trim distance is the distance the service area polygon will extend from the road when no other reachable roads are nearby, similar to a line buffer size. This is useful when the network is sparse and you don't want the service area to cover large areas where there are no features.</para>
        ///   <para>This parameter includes a value and units for the distance. The default value is 100 meters.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>服务区面修剪距离。面修剪距离是当附近没有其他可到达道路时，服务区面从道路延伸的距离，类似于线缓冲区大小。当网络稀疏且您不希望服务区域覆盖没有要素的大片区域时，这很有用。</para>
        ///   <para>此参数包括距离的值和单位。默认值为 100 米。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Polygon Trim Distance")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public string _polygon_trim_distance { get; set; } = "100 Meters";


        /// <summary>
        /// <para>Exclude Sources From Polygon Generation</para>
        /// <para><xdoc>
        ///   <para>The network dataset edge sources that will be excluded when generating service area polygons. Polygons will not be generated around the excluded sources, even though they are traversed in the analysis.</para>
        ///   <para>Excluding a network source from service area polygons does not prevent those sources from being traversed. Excluding sources from service area polygons only influences the polygon shape of the service areas. To prevent traversal of a given network source, you must create an appropriate restriction when defining your network dataset.</para>
        ///   <para>This is useful if you have some network sources that you don't want to be included in the polygon generation because they create less accurate polygons or are inconsequential for the service area analysis. For example, while creating a walk-time service area in a multimodal network that includes streets and metro lines, you should choose to exclude the metro lines from polygon generation. Although the traveler can use the metro lines, they cannot stop partway along a metro line and enter a nearby building. Instead, they must travel the full length of the metro line, exit the metro system at a station, then use the streets to walk to the building. It would be inaccurate to generate a polygon feature around a metro line.</para>
        ///   <para>This parameter is not available when the output geometry types do not include polygons, there are less than two edge sources in the network, the network data source is an ArcGIS Online service, or the network data source is a service on a version of Portal for ArcGIS which does not support excluding sources.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>在生成服务区面时将排除的网络数据集边源。不会在排除的源周围生成面，即使它们在分析中被遍历也是如此。</para>
        ///   <para>从服务区面中排除网络源不会阻止遍历这些源。从服务区面中排除源只会影响服务区的面形状。若要防止遍历给定网络源，必须在定义网络数据集时创建适当的限制。</para>
        ///   <para>如果您不希望将某些网络源包含在面生成中，因为它们创建的面精度较低或对服务区分析无关紧要，这将非常有用。例如，在包含街道和地铁线路的多式联运网络中创建步行时间服务区时，应选择从面生成中排除地铁线路。虽然旅客可以使用地铁线路，但他们不能在地铁线路的中途停下来进入附近的建筑物。取而代之的是，他们必须走完整条地铁线，在车站离开地铁系统，然后使用街道步行到大楼。在地铁线周围生成面要素是不准确的。</para>
        ///   <para>如果输出几何类型不包括面、网络中的边缘源少于两个、网络数据源是 ArcGIS Online 服务，或者网络数据源是不支持排除源的 Portal for ArcGIS 版本上的服务，则此参数不可用。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Exclude Sources From Polygon Generation")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _exclude_sources_from_polygon_generation { get; set; } = null;


        /// <summary>
        /// <para>Accumulate Attributes</para>
        /// <para><xdoc>
        ///   <para>A list of cost attributes to be accumulated during analysis. These accumulated attributes are for reference only; the solver only uses the cost attribute used by your designated travel mode when solving the analysis.</para>
        ///   <para>For each cost attribute that is accumulated, a Total_[Impedance] property is populated in the network analysis output features.</para>
        ///   <para>This parameter is not available if the analysis layer is not configured to output lines, the network data source is an ArcGIS Online service, or the network data source is a service on a version of Portal for ArcGIS that does not support accumulation.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>在分析期间要累积的成本属性列表。这些累积属性仅供参考;求解器在求解分析时仅使用指定出行模式使用的成本属性。</para>
        ///   <para>对于累积的每个成本属性，将在网络分析输出要素中填充一个 Total_[Impedance] 属性。</para>
        ///   <para>如果分析图层未配置为输出线，网络数据源是 ArcGIS Online 服务，或者网络数据源是不支持累积的 Portal for ArcGIS 版本上的服务，则此参数不可用。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Accumulate Attributes")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _accumulate_attributes { get; set; } = null;


        /// <summary>
        /// <para>Network Analyst Layer</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Network Analyst Layer")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_network_analysis_layer { get; set; }


        public MakeServiceAreaAnalysisLayer SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}